name: "[CI] <%= component_module_name %>"
on:
  push:
    branches:
      - develop
      - release/*
      - "*-stable"
  pull_request:
    branches-ignore:
      - "chore/l10n*"

env:
  CI: "true"
  RUBY_VERSION: <%= RUBY_VERSION %>
  NODE_VERSION: 22.14.0

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  main:
    name: Tests
    runs-on: ubuntu-22.04
    timeout-minutes: 30
    services:
      postgres:
        image: postgres:14
        ports: ["5432:5432"]
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        env:
          POSTGRES_PASSWORD: postgres
    env:
      DATABASE_USERNAME: postgres
      DATABASE_PASSWORD: postgres
      DATABASE_HOST: localhost
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 1
      - uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
      - name: Get npm cache directory path
        id: npm-cache-dir-path
        run: echo "dir=$(npm get cache)-<%= component_name %>" >> $GITHUB_OUTPUT
      - uses: actions/cache@v4
        id: npm-cache
        with:
          path: ${{ steps.npm-cache-dir-path.outputs.dir }}
          key: npm-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            npm-
      - run: bundle exec rake test_app
        name: Create test app
      - run: mkdir -p ./spec/decidim_dummy_app/tmp/screenshots
        name: Create the screenshots folder
      - uses: nanasess/setup-chromedriver@v2
      - run: RAILS_ENV=test bundle exec rails shakapacker:compile
        name: Precompile assets
        working-directory: ./spec/decidim_dummy_app/
      - run: bundle exec rspec
        name: RSpec
      - uses: codecov/codecov-action@v5
      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: screenshots
          path: ./spec/decidim_dummy_app/tmp/screenshots
          if-no-files-found: ignore
